// pages/test/test.js
Page({

  /**
   * 页面的初始数据
   */
  data: {
    // 持久化部分
    testList: [
      {item: '塑料', type: 1},
      {item: '纸巾', type: 1},
      {item: '电池', type: 2},
      {item: '手机', type: 1},
      {item: '代码', type: 2},
      {item: '瓜皮', type: 3},
      {item: '充电宝', type: 4},
      {item: '充电宝', type: 4},
      {item: '充电宝', type: 4},
      {item: '有刺无刺', type: 4}
    ], // 考试数据
    rightNum: 0,
    process: 0,
    isStart: true,
    isTesting: true, // 监听resultList是否为空
    isFinished: false, // 监听resultList是否===10
    isFalse: false,
    category: [
      '可回收物',
      '有害垃圾',
      '厨余垃圾',
      '其他垃圾'
    ],
    yourAnswer: [], // 0-3 对应category
    alias: [
      '黑铁',
      '青铜',
      '白银',
      '黄金',
      '铂金',
      '钻石',
      '星耀',
      '王者',
      '无双王者',
      '荣耀王者'
    ],
    percent: [
      8,        // 黑铁
      10,       // 青铜
      30,       // 白银
      50,       // 黄金
      65,       // 铂金
      75,       // 钻石
      85,       // 星耀
      92,       // 王者
      97,       // 无双王者
      99        // 荣耀王者
    ],
    isOpen: false // 是否打开答案列表
  },
  goToRank() {
    wx.navigateTo({
      url: '/pkg/pages/rankings/rankings',
    })
  },
  startTest() {
    this.setData({
      isStart: true,
      isTesting: true
    })
    this._getTestList()
  },
  selectAnswer(e) {
    if (this.data.process > 9) {
      return
    }
    if (this.data.isFalse === true) return
    const testNum = this.data.process
    // 答题错误处理
    if (+e.currentTarget.dataset.id !== this.data.testList[testNum].type) {
      // 打开错误提示
      this.setData({
        yourAnswer: [...this.data.yourAnswer, +e.currentTarget.dataset.id - 1],
        isFalse: true,
      })
    } else {
      this.setData({
        yourAnswer: [...this.data.yourAnswer, +e.currentTarget.dataset.id - 1],
        rightNum: this.data.rightNum + 1
      })
      // 判断是否写完
      // 下一题
      this._nextPage()
    }
  },
  _nextPage() {
    this.setData({
      process: this.data.process + 1
    })
    // answer、process、rightNum
    const data = {
      yourAnswer: this.data.yourAnswer,
      process: this.data.process,
      rightNum: this.data.rightNum
    }
    wx.setStorageSync('data', data)
  },
  finishTest() {
    // 清空记录
    this.setData({
      process: 0,
      rightNum: 0
    })
    // 提交记录答题
    const rightNum = this.data.rightNum
  },
  checkAnswer() {
    this.setData({
      isOpen: true
    })
  },
  reTest() {
    // 提价结果
    const that = this
    console.log(this.data.rightNum);
    const config = require('../../config')
    const token = wx.getStorageSync('token')
    wx.request({
      url: config.BASE_URL + `/exam/commit?correct=${this.data.rightNum}`,
      method: 'POST',
      header: {
        token: token
      },
      success(res) {
        that._initPanel()
      }
    })
    
  },
  _initPanel() {
    // 初始化所有数据
    wx.setStorageSync('data', {})
    // 清除考试试题
    wx.setStorageSync('test', {})
    // 重置流程控制参数
    wx.setStorageSync('ctrl', {
      isStart: false,
      isTesting: false,
      isFalse: false,
      isOpen: false
    })
    this.setData({
      isStart: false,
      isTesting: false,
      isFalse: false,
      // 重置参数
      yourAnswer: [],
      process: 0,
      rightNum: 0
    })
  },
  /**
   * 检查面板状态
   */
  checkPanel() {
    this.setData({
      isFalse: false
    })
    this._nextPage()
  },
  _getTestList() {
    const that = this
    const config = require('../../config')
    const token = wx.getStorageSync('token')
    // 请求试题数组
    wx.request({
      url: config.BASE_URL + '/exam/questions',
      method: 'GET',
      header: {
        token: token,
        'Content-Type': 'application/json'
      },
      success(res) {
        console.log(res);
        if (res.data.code !== 200) {
          wx.showToast({
            title: '获取题库失败',
          })
        }
        that.setData({
          testList: [...res.data.data]
        })
        wx.setStorageSync('test', that.data.testList)
      }
    })
    
  },

  /**
   * 生命周期函数--监听页面加载
   */
  async onLoad(options) {
    const testList = wx.getStorageSync('test')
    if (!testList) {
      this._getTestList()
    }
    // 获取testLis
    // this.setData({
    //   testList: testList || this.data.testList
    // })
    // 流程参数

    const data = wx.getStorageSync('data')
    // // 控制参数
    const ctrl = wx.getStorageSync('ctrl')
    if (data && this.data.testList) {
      this.setData({
        yourAnswer: data.yourAnswer,
        process: data.process,
        rightNum: data.rightNum,
        isStart: ctrl.isStart,
        isTesting: ctrl.isTesting,
        isFalse: ctrl.isFalse
      })
    }
    // const testList = wx.getStorageSync('test')
    // this.setData({
    //   testList: testList
    // })
    // if (testList) {
    //   return
    // } else {
    //   const token = wx.getStorageSync('token')
    //   // 请求试题数据
    //   const {data:res} = await wx.p.request({
    //     method: 'GET',
    //     header: {
    //       token: token,
    //       'Content-Type': 'application/json'
    //     }
    //   })
    //   if (res.data.code !== 200) return wx.showToast({
    //     title: '请求失败',
    //   })
    //   this.setData({
    //     testList: [...res.data]
    //   })
    //   wx.setStorageSync('test', testList)
    // }
  },

  /**
   * 生命周期函数--监听页面初次渲染完成
   */
  onReady() {

  },

  /**
   * 生命周期函数--监听页面显示
   */
  onShow() {

  },

  /**
   * 生命周期函数--监听页面隐藏
   */
  onHide() {

  },

  /**
   * 生命周期函数--监听页面卸载
   */
  async onUnload() {
    // 持久化流程控制数据
    wx.setStorageSync('ctrl', {
      isStart: this.data.isStart,
      isTesting: this.data.isTesting,
      isFalse: this.data.isFalse
    })
  },

  /**
   * 页面相关事件处理函数--监听用户下拉动作
   */
  onPullDownRefresh() {

  },

  /**
   * 页面上拉触底事件的处理函数
   */
  onReachBottom() {

  },

  /**
   * 用户点击右上角分享
   */
  onShareAppMessage() {

  }
})